import axios from 'axios';
import qs from 'qs'
import {ElMessage, ElMessageBox} from 'element-plus';
// import { useRouter } from 'vue-router';
import router from '../router'
// const routerGo = useRouter()
/**
 * 请求失败后的错误统一处理
 * @param {Number} status 请求失败的状态码
 */

const errorHandle = (status, other) => {
	// 状态码判断
	switch (status) {
		// 401: 未登录状态，跳转登录页
		case 401:
			break;
			// 403 token过期
			// 清除token并跳转登录页
		case 403:
			break;
			// 404请求不存在
		case 404:
			break;
		default:
			console.log(other);
	}
}

// 创建axios实例
let instance = axios.create({
	timeout: 1000 * 12,
	baseURL: import.meta.env.VITE_APP_URL
});

//请求拦截器
instance.interceptors.request.use(config => {
	config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
	if(config.method == "post") {
		config.data = qs.stringify(config.data)
	}
	config.headers.Authorization = 'Bearer ' + window.sessionStorage.getItem('token');
	console.log(config.url)
	return config
})

// 响应拦截器
instance.interceptors.response.use(
	// 请求成功
	res => {
		if (res.status === 200) {
			if(res.data.code === -1) {
				ElMessageBox.confirm('账号在别处登陆请重新登陆', '提示', {
					confirmButtonText: '确定',
					cancelButtonText: '取消',
					type: 'warning'
				}).then(async () => {
					router.push({
						path: "/login",
					})
					sessionStorage.removeItem("token");
				})
			}
			return Promise.resolve(res.data)
		} else {
			return Promise.reject(res.data)
		}
	},
	// 请求失败
	error => {
		console.log(error);
	}
);

export default instance;
